package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

import java.util.ArrayList;


//使用集合存储元素进行优化：

public class StudentDao implements BaseStudentDao {
    // 创建学生对象数组
    private static Student[] students = new Student[3];

    static {
        Student stu1 = new Student("heima001", "张三", "23", "1999-11-11");
        Student stu2 = new Student("heima002", "张三", "23", "1999-11-11");
        Student stu3 = new Student("heima003", "李四", "24", "2000-11-11");

        //添加至数组：
        students[0] = stu1;
        students[1] = stu2;
        students[2] = stu3;
    }

    // 添加学生方法
    public boolean addStudent(Student stu) {
        //遍历数组，查看当前数组是否满了

        for (int i = 0; i < students.length; i++) {
            //是否满：
            if (students[i] == null) {
                //不满则添加至数组：
                students[i] = stu;
                return true;
            }
        }
        return false;
    }


    //集合可以自动增长，无需担心是否满：添加完成直接return true;


        /*// 2. 添加学生到数组
        //2.1 定义变量index为-1，假设数组已经全部存满，没有null的元素
        int index = -1;
        //2.2 遍历数组取出每一个元素，判断是否是null
        for (int i = 0; i < stus.length; i++) {
            Student student = stus[i];
            if(student == null){
                index = i;
                //2.3 如果为null，让index变量记录当前索引位置，并使用break结束循环遍历
                break;
            }
        }

        // 3. 返回是否添加成功的boolean类型状态
        if(index == -1){
            // 装满了
            return false;
        }else{
            // 没有装满, 正常添加, 返回true
            stus[index] = stu;
            return true;
        }*/

    // 查看学生方法
    @Override
    public Student[] findAllStudent() {
        //创建集合：
        return students;
    }

    public void deleteStudentById(String delId) {
        // 1. 查找id在容器中所在的索引位置
        int index = getIndex(delId);
//        // 2. 将该索引位置,使用null元素进行覆盖
//        stus[index] = null;*/

//        students[index] = null;

        //遍历数组：
        for (; index < students.length - 1; index++) {
            //
            students[index] = students[index + 1];

        }
        students[index] = null;


    }

    public int getIndex(String id) {
        int index = -1;
        for (int i = 0; i < students.length; i++) {
            Student stu = students[i];
            if (stu != null && stu.getId().equals(id)) {
                index = i;
                break;
            }
        }
        return index;
    }

    public void updateStudent(String updateId, Student newStu) {
        // 1. 查找updateId, 在容器中的索引位置
        int index = getIndex(updateId);
        // 2. 将该索引位置, 使用新的学生对象替换
        /*stus[index] = newStu;*/
//        stus.set(index,newStu);
        students[index] = newStu;
    }
}
